package br.com.sige.managedBean;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import br.com.sige.contratoEjb.EnderecoContrato;
import br.com.sige.contratoEjb.PessoaFisicaContrato;
import br.com.sige.entidade.Endereco;
import br.com.sige.entidade.PessoaFisica;

@ManagedBean(name="pessoaFisicaBean")
@RequestScoped
public class PessoaFisicaBean {

	@EJB
	private PessoaFisicaContrato pessoaFisicaContrato;
	
	@EJB
	private EnderecoContrato enderecoContrato;

	private PessoaFisica pessoaFisica;
	
	private List<PessoaFisica> listaPessoaFisica;
	
	Boolean editable = false;
	

	public void salvar(){
		try {	
			if(pessoaFisica == null){
				pessoaFisica.setCpf(pessoaFisica.getCpf().replace(".", "").replace("-", ""));//tirando mascara CPF
				this.pessoaFisicaContrato.salvar(pessoaFisica);
			}else {
				Endereco endereco = pessoaFisica.getEndereco();
				endereco = enderecoContrato.salvar(endereco);
				pessoaFisica.setEndereco(endereco);
				this.pessoaFisicaContrato.salvar(getPessoaFisica());
				pessoaFisica = new PessoaFisica();
			}
			retornar();
			
		} catch (Exception e) {
			this.addMensagem(FacesMessage.SEVERITY_WARN, "Erro ao cadastrar Pessoa Fisica");
			e.printStackTrace();
			
		}
	}
	
	
	public String editAction(PessoaFisica pessoaFisica) { 
		setEditable(true);
		return null;
	}
	
	public void excluir(){
		this.pessoaFisicaContrato.excluir(getPessoaFisica());
		pessoaFisica = new PessoaFisica();
		this.listarPessoaFisica();
	}

	
	private void retornar() {
		this.addMensagem(FacesMessage.SEVERITY_INFO,"Operacao realizada com sucesso");
		this.listarPessoaFisica();
		pessoaFisica = new PessoaFisica();
	}
	
	private void addMensagem(Severity tipo, String msg) {
		FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(tipo, "", msg));
	}
	
	public void listarPessoaFisica() {
		this.listaPessoaFisica = this.pessoaFisicaContrato.listarPessoaFisica();
	}
	
	public PessoaFisica getPessoaFisica() {
		if (pessoaFisica == null) {
			pessoaFisica = new PessoaFisica();
		}
		return pessoaFisica;
		}

	public void setPessoaFisica(PessoaFisica pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}
	
	public List<PessoaFisica> getListaPessoaFisica() {
		if (listaPessoaFisica == null) {
			this.listarPessoaFisica();
		}
		return listaPessoaFisica;
		}

	public void setListaPessoaFisica(List<PessoaFisica> listaPessoaFisica) {
		this.listaPessoaFisica = listaPessoaFisica;
	}


	public Boolean getEditable() {
		return editable;
	}


	public void setEditable(Boolean editable) {
		this.editable = editable;
	}

	
}
